import axios from "axios";
import NProgress from "nprogress";
import "nprogress/nprogress.css";

//创建axios实例
const requestMock = axios.create({
    baseURL: "",
    timeout: "2000",
});

//配置请求拦截器
requestMock.interceptors.request.use((config) => {
    //开启进度条
    NProgress.start();

    return config;
});

//配置响应拦截器
requestMock.interceptors.response.use(
    (response) => {
        //关闭进度条
        NProgress.done();

        //对于我们的成功来说,不但响应状态码是200,并且请求回来的数据中的后端给的code码也是200才可以
        //举个例子:登录的时候返回密码错误,但是响应状态码是200,但是数据中code是207,这就不是我们想要的
        if (response.data.code === 200) {
            //当拿到我们想要的数据后,直接返回想要的数据(response.data只是后台返回的整体数据,我们想要的数据在response.data.data)
            return response.data.data;
        }
        return Promise.reject({ message: response.data.message });
    },
    (error) => {
        //关闭进度条
        NProgress.done();
        return Promise.reject(error);
    },
);

//把axios实例暴露出去
export default requestMock;
